One challenge in designing integrated circuits (ICs) is accommodating several different power supply voltages on a single IC. Typically, an IC will have a “core” power supply for powering the bulk of its internal circuitry. The voltage level of the core power supply is usually kept low in order to conserve power. As IC fabrication processes improve and the minimum feature size on an IC decreases, the allowable core voltage also decreases. ICs fabricated using current IC processes can typically operate at approximately 1.0V, and even lower voltages will be possible soon, as process technology continues to improve.
For particular applications, however, an IC can require the use of one or more other voltage levels, usually higher than the core voltage. For example, an IC may need to communicate with other components in a system using an input/output (I/O) standard that requires a particular voltage level for compliance (e.g., the TTL standard, which may require a voltage level of 3.3V). The low voltage core of the IC is electrically separated from the high voltage I/O, and the core and I/O are each coupled to their own power supplies.
In another example, a section of the IC may require a special power supply in order to perform a particular function. For instance, certain types of nonvolatile memory circuits need a high voltage (e.g. 10.0-14.0V) to write or erase a memory cell. An IC that includes such nonvolatile memory can use a separate high voltage power supply (which can be provided by an external source or produced on the IC itself) for writing or erasing nonvolatile memory cells. The high voltage power supply and the circuits that use it can be segregated from other sections of the core that operate at a different, lower voltage level.
There are many other examples of applications that can require the use of multiple voltage levels. In such applications, level shifters are used to communicate between two sections of an IC using different voltage supplies. A level shifter is a type of circuit that translates logical signals using one voltage level to logical signals using another voltage level. For example, a level shifter can take a signal having a low voltage supply equal to VDD, where a logic low corresponds to 0V and a logic high corresponds to VDD, as an input. The level shifter translates this input signal to an identical logical signal at a high voltage level VPP, where a logic low corresponds to 0V and a logic high corresponds to VPP. In an example, VDD can be a core voltage of 1.0V and VPP can be a high voltage of 12.0V for writing and erasing nonvolatile memory. In this example, the level shifter shifts input signals in the range 0V-1.0V to output signals in the range 0V-12.0V.
An example of a prior art level shifter is shown in FIG. 1. Level shifter 100 includes NMOS transistors 115 and 125, PMOS transistors 113 and 123, and inverter 130. Transistors 115, 125, 113, and 123 are thick oxide transistors, while transistors 133 and 135, which form inverter 130, are thin oxide transistors. Their thicker gate oxide allows transistors 115, 125, 113, and 123 to tolerate the greater voltages that can be imposed by the high voltage supply.
Level shifter 100 shifts an input signal at its input terminal A, having a voltage range of 0V to VDD, to an output signal at its output terminal Y, having a voltage range of 0V to VPP. For example, VDD can be 1.8V and VPP can be 3.3V. A logic low (0V) at input terminal A of level shifter 100 results in a logic low (0V) at output terminal Y. A logic high, corresponding to a voltage of 1.8V (VDD), at input terminal A of level shifter 100 results in a logic high, corresponding to a voltage of 3.3V (VPP), at output terminal Y.
In some applications, it would be advantageous to be able to use a single level shifter that can shift to different voltage levels. A single level shifter would allow for more efficient use of the resources on an IC and simplifies the design of the IC. For instance, as noted above, some types of nonvolatile memory use a very high voltage (e.g., 12.0V) to write or erase data, but use a lower voltage (e.g., 1.8V) to retrieve the stored data. In this type of memory application, it can be advantageous to use a single level shifter that can be powered by one of a plurality of voltage levels to drive inputs to the memory. A user can select the proper voltage level to power the level shifter depending on the intended operation (e.g., read, write, or erase).
A PLD is a well-known type of digital integrated circuit that can be programmed to perform specified logic functions, and that can include nonvolatile memory. Types of PLDs include the field programmable gate array (FPGA), and the complex programmable logic device (CPLD). PLDs typically include various programmable resources, such as configurable logic blocks (CLBs), programmable input/output blocks (IOBs), and programmable interconnect structures, and can also include special purpose blocks such as DLLs, RAM, multipliers, and processors. The functionality of a PLD is typically controlled by data bits provided to the device for that purpose. In some PLDs, these data bits are stored in nonvolatile memory. Level shifters can be useful in such PLDs, and other types of ICs, for example, for accessing nonvolatile memory cells that require high voltages for some modes of operation, and lower voltages for other operations.
One problem associated with prior art level shifters is that they only operate over a limited range of voltages. Limitations in process technology can restrict the range of acceptable input and output voltages for a level shifter. For instance, as described above, level shifter 100 consists of high voltage transistors that can tolerate the high voltage power supply and the high voltage output swing. However, the high voltage transistors also have high threshold voltages, and therefore cannot operate at very low voltages. The voltage swing of the input to level shifter 100 must exceed this threshold voltage in order for the level shifter to function. As minimum feature sizes shrink, the correspondingly decreasing core voltages only exacerbate this problem.
Therefore, a need exists for a single level shifter that is capable of shifting to multiple output voltage levels. Furthermore, a need exists for a single level shifter that can function for very low input voltages and across a wide range of high output voltages.